---------------------------------------------------------
Microsoft(R) ActiveX(R) Data Objects 2.0 ļ
---------------------------------------------------------

(c) 1998 Microsoft Corporation. All rights reserved.

ĵ Microsoft ADO ĵ֣ṩһЩµĻϢ

----
Ŀ¼
----

1. Ʒ˵
   
2. ¹
2.1 첽ӡִСȡ¼
2.2 ̬
2.3 ־
2.4  Recordset 
2.5 ɸѡͲ
2.6 VC++  ADO չ
2.7 Visual AnalyzerMicrosoft Visual Studio(TM)ҵ棩 ADO ֧
2.8 ͻαĳͻ
2.9 Զ DataFactory Ϊ

3. ˵
3.1 ȫǿ
3.2 Ϊ
3.3 Զ尲ȫ

4. ֪ơԼĵ˵

-----------
1. Ʒ˵
-----------

ActiveX Data Objects (ADO) ڷݵĻԶĽӿڡADO ʹ OLE DB ӿڷʷΧԴͨ ODBC ṩݡ

RDO  DAO ûܺܿӦ ADO ̣ԭ ADO ԴڿЩӿڵľ顣

Microsoft Remote Data Service (RDS)  ADO һRDS Ϊפ Microsoft Internet Explorer ϵӦóṩЧӺݷܡһֻڹ HTTPHTTPS Secure Sockets ϵHTTP DCOM ӦóЭ֮ϵĿͻ/ķֲʽRDS ʹʶ ActiveX ؼҪֲʽܼҵڲ Internet Ӧó Web Աṩ Microsoft Visual Basic(R) ʽ̵ݷʡ

---------
2. ¹
---------

ADO 2.0 Ϊ˼¹ܡ

2.1 첽ӡִСȡ¼

 RDO 2.0 һADO ֧첽첽չ֮ȡڵȴɵͬʱ¼첽ʱ֪ͨ첽ȡԿͻα (CursorLocation =adUseClient) ضܣÿͻα꽫ӲѯصһУȻڲѾȡеͬʱں̨ȡ

2.2 ݹ

ͬ MSDataShape ṩߣADO ԷּʾݡADO Ҳʾ¼ķϡ

2.3 ־

ڿԽ Recordset ֱӱڱӲϣԺټأʹÿͻα깤ʱʱӵִвѯ rst.Save("myfilename")رռԺ rs.Open("myfilename",,,adCmdFile) ޸ݡ 

2.4  Recordset 

 ADO 2.0 д Recordset Դִвѯֻ贴 Recordset ׷ĳЩ Field 󡢵 rst.Open()Ȼӵп׷ݡԶ̵úʹ Recordset 󣬾ͺ Recordset Ѿɲѯ

2.5 ɸѡͲ

ʹÿͻαʱͻ˵Ľ

2.6 VC++  ADO Extensions 

ͨʹñʹ C++ еıͣ VC++ ûṩõܡ

2.7 Visual AnalyzerMicrosoft Visual Studioҵ棩 ADO ֧

ADO  Visual Analyzerύ¼԰ܷ

2.8 ͻαĳͻ

Ϊ㷽ͨͻα꽨 Recordset ṩǿܡڣڿͻα֧ʹóͻº Resync  Update

2.9 Զ DataFactory Ϊ

ڣִͨ DataFactory ԶʽԶΪDataFactory Զͨ RDS 򿪵 Recordset Ĵ򿪺ΪѡԼд¾ʹ RDS 2.0 ԴĬϾ (MSDFMAP.dll)ͨ༭ʹõĬ INI ļ (MSDFMAP.INI) ĬϾΪ

-----------
3. ˵
-----------

3.1 ȫǿ

ð汾 ADO  RDS İȫǿԱ㵱 Internet Explorer ڡȫģʽʱʹĳЩܵơ

3.1.1. 
 Internet Explorer 4.0 ΪͬġòͬİȫãԱЩԶ ADO/RDS Ϊ Internet Explorer 4.0 жĸ
*  Internet 
*  ҵ
*  վ
*  վ

3.1.2. ȫȼ
Զÿָʹõİȫȼÿʹµİȫȼ
*  
*  
*  
*  Զ

 ActiveX ؼһΪ ADO/RDS ȫ Internet Explorer 4.0 й뽫ȫȼΪС򡰸ߡԶڽ ADO/RDS Ϊڰȫǰȫģʽ¹

3.2 Ϊ

Ĭ£ԡҵ򡱡վ򡱺͡Internet 򡱵ҳʱ Internet Explorer 4.0 ж ADO/RDS κηǰȫʾûʾĬ£ԡվ򡱵ҳö ADO/RDS κηǰȫ˵Щģʽʱ ADO/RDS Ϊ

3.2.1 ȫ
жΪǡȫġζڰȫ磬ĬΪ Internet ExplorerԶڷǰȫģʽУ£ǰȫμ 3.2.3ڷǰȫģʽ磬Visual Basicġ
a. RDS.DATACONTROL 
b. RDS.DataSpace 
c. ADO Recordset 

3.2.2 ǰȫ
жΪǡǰȫġڰȫ²ʱ޷ֱӻӴЩ󣨲û
a. RDSServer.DataFactory 
b. ADO Connection 
c. ADO Command 

3.2.3 ȫķǰȫ
±ΪǶԡȫķǰȫ -- RDS.DataControlRDS.DataSpace  ADO RecordsetЩڰȫǲģڷǰȫȴġ

a. RDS.DataControl
i)  RDS.DataControl  DCOM ζŲڱؼʹ DCOM Эӵķϴݿӡ
ii) ͨ HTTP ִеѾҳķζ RDS.DataControl е Server Աҳ (http:// Server) ͬ

b. RDS.DataSpace 
i) RDS.DataSpace  DCOM ζŲڱؼ DCOM Эϣʹ RDS.DataSpace ҵ
ii) ͨ HTTP ִе㷽Ѿҳķζ DataSpace ϵ CreateObject Уڶָҳͬķ

c. ADO ¼ 
i) ṩΪ MS Remote κεطӡַԡProvider=MS Remoteͷַе "Remote Server" Ҳҳķͬص DCOM ӡ
ii) س־Բ罫¼浽ļϵͳӱؼļд򿪼¼

3.3 Զ尲ȫ

ADO/RDS ΪѡûбΪȫ ActiveX ؼгʼִнűƣָͨİȫİȫáҵĬϡûбΪȫ ActiveX ؼгʼִнűѡ£
ȫ = 		ֵ = á
ȫ = 		ֵ = á
ȫ = 		ֵ = ʾ

йȫĬãμ Internet Explorer ĵ

ͨİȫ𣬿Ըδӵ ADO Recordset ΪҪòȫĲϣÿЩʱʾʽؽѡֵΪáòͨԶ尲ȫãɡͬʱע⣬ RDS DataControl  ADO Recordset вȫĲ罫浽ļϵͳļУ뽫ѡֵΪáЩ Recordset  RDS Datacontroláʾڡá

ֱͨӲѡԶĬáѡȫ÷ǰȫָͼиòʱʾ棬򲻽оøòΪͬİȫòͬԶáָȫԶ尲ȫãִ² 

棺עáûбΪȫ ActiveX ؼгʼִнűĵ 5 󣬽ҳʹκΰȫǰȫ ActiveX ؼɼؽû¶ĿؼĽű룩ֻڡҵ򡰿վ㡱ȫڣҪ Internet 򣩽Ĳ

1.  Internet Explorer 4.0 ġ鿴˵ѡInternet ѡ󣬵Internet ѡԻѡ񡰰ȫѡ
2. ӡбѡҪԶõ
3. ΪѡѡԶ塱ɴ˼Իеġáť
4. áȫáԻ
5. Ҫö ADO/RDS ķǰȫ 3.2.3 ʾ棬ڡȫáԻġûбΪȫ ActiveX ؼгʼͽűСѡѡáȻ󵥻ȷ
6. ϣһ ADO/RDS зǰȫ 3.2.3 ʱʾ棬ڡȫáԻġûбΪȫ ActiveX ؼгʼͽűСѡѡʾȻ󵥻ȷ
7. ϣȫö ADO/RDS еķǰȫ 3.2.3 ڡȫáԻġûбΪȫ ActiveX ؼгʼͽűСѡѡ񡰽áȻ󵥻ȷ
8. бҪظϲΪȫԶ尲ȫá
9. ȷ

ڣADO/RDS ָԶģʽ»ЩýӰָȫе ADO/RDS  3.2.3 Ϊ -- 򿪱ӣͨ DCOM ӵҳ֮ķ¼浽ؼļкʹӱؼļд򿪼¼

ԶѡΪʾڶ ADO/RDS зǰȫʱʾ¾棺

ҳڷһеԴǷòûѡشǡ򡰷񡱡شǡɸòʧܡ

-------------------------------------------
4. ֪ơԼĵ˵
-------------------------------------------

4.1 ȱٲϵͳ֧֣ǰв֧ RDS еĿͻģ¡

4.2 ʹ adUseClient Զ̷ SQL Server 6.5 Service Pack 4 ʱԿɸµĽڲѯʹ DISTINCT ؼֽԡ SQL Server ⣬ԺķмԽ

4.3  Internet Information Server 4.0 дʱҪⲽԷԱ㴦 RDS

A) ڰװʱѡСִзʡ
B)  msadcs.dll  vroot\msadc˴ vroot ҳĿ¼

4.4 ʹ Recordset.Save ʱҪõõĽʹ CursorLocation=adUseClient OLE DB ṩֱ߲֧֧¼Ĺܣʹÿͻαṩ˹ܡ

4.5 ADO ¼ 

WillMove  MoveCompleteWillChangeField  FieldChangeCompleteWillChangeRecord  RecordChangeCompleteWillChangeRecordset  RecordsetChangeComplete Լ EndOfRecordset ı⽫ЩΪ Connection ¼Ȼȴ Recordset ¼

4.5.1 WillConnect
ĵж WillConnect ¼ Options ȷΨһЧѡ adOpenAsync

WillConnect ¼ĵ˵ɸ pConnection ǲȷģpConnection ޷ͨ¼޸ġ

4.5.2 ConnectComplete  Disconnect
Щ¼ adStatus ʼշ adStatusOKĵ˵Ҳܹ adStatusErrorsOccurredȷ

ڶ adStatus л˵˿ɡòΪ adStatusUnwantedEvent Խ̵ֹ֪ͨȻرպ´ӽѾַʽرաκ¼ٴμ

4.5.3 WillExecute
ĵж CursorType Ϊø÷ʱΪ adOpenUnspecifiedܸĸòǲȷġ۵Ĳֵʲôɶиġ¼ĲǼ¼򿪣ԡ

ĵж LockType Ϊø÷ʱòΪ adLockUnspecified򲻿ɶиġǲȷġ۵ֵʲôԶԸòиģ¼δ¼ٴκԡ

ĵעͣӦ pConnectionpCommand  pRecordset Ϊ¼Ķ󣬶Ϊ Nothingǲȷġ¼һֱ pConnection á

4.5.4 InfoMessage
ĵж pError Ϊ adStatus ֵ adStatusErrorsOccurred ʱֵĴ󣻷򽫲ǲȷġÿؾʱ¼ᱻ£¼״̬Ϊ adStatusOK pError 󽫰档

ĵж adStatus Ϊ¼ĲɹòΪ adStatusOKʧܣΪ adStatusErrorsOccurredʵϣ¼ΪԶᡰʧܡ״̬Զ adStatusErrorsOccurred

 pConnection ΪӶΪִеӡҲԳӵ͵ĲС

4.5.5 WillMove  MoveComplete
˵У Recordset ҲԵ¼ļFilterAbsolutePageAbsolutePositionӼ¼ʹ¼¼ӣʹһ¼ƶҲἤ¼⣬Delete ἤЩ¼

4.5.6 WillChangeRecord  RecordChangeComplete
˵ӦΪеĵһĵֶνЩ¼

4.6 ADO/RDS ĵᵽ RDS.DATACONTROL Ϊ URL ԡѷ RDS 2.0 汾виԡ

4.7 ʹ CursorLocation=adUseClient ʱ첽ȡ ADO 2.0 汾пáִķ - һͨ Recordset.Open  Options ͨ Recordset ԼϡAsynchronous Rowset ProcessingԡҪȡõĽͨӦʹ Recordset.Open ʹòᵼ ADO ̨ȡ¼Ķʧ⣬ʹ Provider="MS Remote" к̨ȡͨ properties ʵֻ֣ͨ Recordset.Open С

4.8  ADO ڴԴoutputreturnֵظûʱADO ṩ߶ȡһֵζûֵ׼֮ǰжȡ޷õЩֵ

Ҫдʾ

Sub params()
Dim conn As New Connection
Dim cmd As New Command
Dim rs As Recordset

conn.Open "pubs", "sa", ""
'conn.Open "provider=sqloledb;data source=sqlserver;user id=sa;password=;initial catalog=pubs"
conn.Execute "DROP PROC test_proc"
conn.Execute "CREATE PROCEDURE test_proc as SELECT * from authors RETURN 1"
Set cmd.ActiveConnection = conn
cmd.CommandText = "test_proc"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("RetVal", adInteger, adParamReturnValue)

Set rs = cmd.Execute()
Debug.print rs(0)

 Microsoft SQL Server ǰֻα괦ļ¼ر֮ǰԲֵеķʽЧ֮ǰȡֵֻڼ¼ر֮󣨶֮ǰ֮󣩲òܵõȷĲֵ

Debug.Print "Return Val : "; cmd(0)
rs.Close
Debug.Print "Return Val : "; cmd(0)
conn.Close

End Sub

4.9 ʹ CursorLocation=adUseClient ʱRecordset.Resync() ֻԷֻ Recordsets Ч

4.10 Ҫͨ Visual Basic ʹ ADO 2.0 FetchProgress  FetchComplete ¼ Visual Basic Ӧ 6.0 汾

4.11 Բ֧ǩṩʹ ADO ¼ʱûÿҪ ADO  OLE DB ṩߴȡµʱյ RecordsetChanged ֪ͨ䷢Ƶֱȡ Recordset.CacheSize ԡ

4.12  IIS ʹ RDS ʱÿ߳ͨ Web עԿơÿ߳ڽͨŻͨСѯ޴£ӰܡûӦԻѵĽֵָΪ

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCThreads

˴ ADCThreads ûӵġΧΪ 1-50  REG_DWORDĬֵ 6ĬϵЧֵΪ 6  50ûҪעֵĬ£עС

4.13  Recordsets Щ Connection  OpenSchema صУ Connection ޷ Visual Basic еȡЩʹӦ DBTYPE_UI4  OLE DB ͵Сھи͵ķмУйЩе OLE DB ˵

4.14 ʹ ADO Connection  OpenSchema ʱʹúĵڶԷصĽơòһֵ飬 VBA ָΪ

Dim criteria(3) As Variant

criteria(0) = "pubs"		' Use the "pubs" database on the SQL Server
criteria(1) = Empty		' No restriction on the schema/owner
criteria(2) = Empty		' No restriction on the table name
criteria(3) = "table"		' Only objects of type "table" are returned.
Set rs = cnn.OpenSchema(adSchemaTables, Criteria)

4.15  ADO Уṩ߻ʹõָαͿܲһֱ֧ Recordset  RecordCount ԡṩ߻αͲ֧ RecordCount £ֵΪ -1

4.16 д뷶
ΪÿдĶʽѡȫ뷶ڽճ򴰿ʱʽԣ뽫޷С

4.17 ڡ״׷ĵУ﷨ӦʾΪ
SHAPE {parent command}
APPEND {child command} [AS] table-alias
RELATE (parent column TO child column)

4.18 ڡʷּ Recordset еСĵУ 3 еĴӦΪ

Set rstChapter = rst("chapter").Value

4.19 ڡ 4ݣADO ̳̣ĵУ뷶ָ Field  Optimize ԡ΢ȷʹ CursorLocation=adUseClient δӵ Recordset ʱOptimize Գ Field  Optimize С÷£

rs("au_lname").properties("Optimize") = True

4.20   StayInSync Եĵ˵ԡڷּ Recordset УָʾӼ¼ļϣӼʱ丸¼ǷҲҪġ

˵ȷԿƵûڸ¼жλʱǷĶӼ¼ãĬֵΪ True

ĵл˵û򷵻زֵΪ TrueӼʱ Recordset Ҳ£Ϊ False Recordset 󽫼ǰӼ

˵ȷΪ True¼ͬ -- ڸ¼еĶλӼ¼ʾݡΪ FalseӼ¼ýضӼϢʹûڸ¼жλ

4.21 ڡWillChangeRecordset  RecordsetChangeComplete (ConnectionEvent) İ˵WillChangeRecordset  RecordsetChangeComplete ¼ Recordset RequeryResyncCloseOpen  FilterǲȷġFilter  Close ᴥ¼

4.22 ڡWillMove  MoveComplete (ConnectionEvent) İ˵WillMove ¼ Resync ǲȷġResync ᴥ¼

